﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using clEntidad;
using clBD;
using System.Data.OleDb;

namespace clBUS
{
    public class BUSLlave :
        BUSBase
    {
        public BUSLlave(String cadBD) : base(cadBD) { }

        public Llave get(String codigo)
        {
            Llave llave = null;
            using (OleDbConnection cn = getCn())
            {
                OleDbDataReader dr = new BDLlave(cn).get(codigo);
                if (dr.Read())
                {
                    llave = new Llave();
                    llave.codigo = codigo;
                    llave.detalle = dr.GetString(0).Trim();
                    llave.cant1 = dr.GetInt16(1);
                    llave.cant2 = dr.GetInt16(2);
                    llave.codLocal = dr.GetInt32(3);
                    llave.estado = dr.GetString(4);
                    llave.ultId = dr.GetInt32(5);
                    llave.cant3 = dr.GetInt16(6);
                    llave.alertaEn = dr.GetInt16(7);
                }
            }
            return llave;
        }
        public void grabar(RegistroLlave reg, Usuario usuario)
        {
            using (OleDbConnection cn = getCn())
            {
                BDPersona bdPersona = new BDPersona(cn);
                bdPersona.grabar(reg.persona , 0);
                if (reg.persona.numMovil.Trim() != "")
                {
                    bdPersona.grabaMovil(reg.persona.numDoc, reg.persona.numMovil);
                }
                BDLlave bdLlave = new BDLlave(cn);
                bdLlave.grabarElemento("empresa", reg.persona.empresa);
                bdLlave.grabarElemento("motivo", reg.motivo);
                bdLlave.grabar(reg.llave);

            }
        }
        public List<RegistroLlave> getPendientes(int idLocal)
        {
            List<RegistroLlave> elems = new List<RegistroLlave>();
            using (OleDbConnection cn = getCn())
            {
                OleDbDataReader dr = new BDLlave(cn).getPendientes(idLocal);
                while (dr.Read())
                {
                    RegistroLlave elem = new RegistroLlave();
                    elem.llave.codigo = dr.GetString(0);
                    elem.llave.detalle = dr.GetString(1);

                    elem.persona.numDoc = dr.GetString(2);
                    elem.persona.apePat = dr.GetString(3);
                    elem.persona.apeMat = dr.GetString(4);
                    elem.persona.nombres = dr.GetString(5);

                    elem.salida = dr.GetDateTime(6);
                    elems.Add(elem);
                }
            }
            return elems;
        }
        public void grabarVarios(List<Llave > elems)
        {
            using (OleDbConnection cn = getCn())
            {
                BDLlave objBDEqp = new BDLlave(cn);
                foreach (Llave elem in elems)
                {
                    objBDEqp.grabar(elem);
                }
            }
        }
    }
}
